識別再捕獲法として最初に思いつくのは、Petersen 法と呼ばれている方式である。100年以上前に、デンマークの魚類学者Petersonによって開発されたのでこの名前があるが、その後、鳥類学者のLincolnも同様の方法を報告したことからLincoln法とも呼ばれる。この方法では,1回だけ標識虫を放し(M匹としよう)充分に野生虫と混じり合った後(ただし標識虫が寿命で死んでしまうほど長く放置してはならない)、1回だけ大規模な再捕獲を実施する。このときの捕獲された非標識虫数(野生虫数)は\(n_1\)匹で、識別虫数が\(m_1\)匹であったとしよう。このとき次の比例式が成り立つ。(総野生虫+標識虫数、\(N\)) :(標識数、\(M\)) = (再捕獲野生虫+標識虫数、\(n_1\)) :(再捕獲識別虫数、\(m_1\))なので、もともといた合計個体数N(総野生虫+標識虫数)の推定値は、
\(\hat{N}=(Mn_1)/m_1\)
によって求めることが出来る。極めて単純で直感的だがPeteson法は、再捕獲される標識虫の数が少ないとき、個体数を過大推定してしまう。再捕獲識別虫数、\(m_1\)は、数学でいうところの超幾何分布に従うことが知られており、過大推定してしまうのは超幾何分布の特徴である。この偏りを補正するための修正式がChapman(1951)によって提唱されている。計算方法は、伊藤・村井(1977)に詳しい。
\(\hat{N}=\frac{(M+1)(n_1+1)}{m_1+1}\)
上図は、Peterson法の問題点を示している.再捕獲数が少ないと、推定値が過大評価になる上に精度が悪い.10,000匹の野生虫の中に200匹の標識虫を放飼した5万回のシミュレーション結果.真の値は10,200匹(細線).灰色のエリアは95%信頼区間、太線が推定値の平均値、点線はChapmanの補正推定値の平均値.ちなみに再捕獲総数がゼロに近くなると推定値が急激に小さくなるのは、標識虫の再捕獲がゼロの場合を除去して推定しているからである.
## 仮想のカメムシ調査結果
mark <- 200 ## 標識虫(野生虫に追加する)
recap.N <- 50 ## 再捕獲虫総数マーク有+マークなし(野生虫+標識虫)
recap.M <- 5 ## 再捕獲虫でマーク有(標識虫)
## Peterson法オリジナルの推定
estimate <- mark*recap.N/recap.M
print(paste("Peterson の推定値は", estimate, sep=":"))
## Chapmanの補正値は(こっちを使った方が良い)
estimate.chapman = (mark+1)*(recap.N+1)/(recap.M+1)-1
print(paste("Chapmanの補正値は", estimate.chapman, sep=":"))
## 95% 信頼区間の推定
variance = (mark+1)*(recap.N+1)*(mark-recap.M)*(recap.N-recap.M)/(recap.M+1)/(recap.M+1)/(recap.M+2)
print(paste("Chapman補正値の95%信頼区間は:", max(0, round(estimate.chapman-1.96*sqrt(variance), digits=1)), "から", round(estimate.chapman+1.96*sqrt(variance), digits = 1), sep=""))
## [1] "Peterson の推定値は:2000"
## [1] "Chapmanの補正値は:1707.5"
## [1] "Chapman補正値の95%信頼区間は:536.5から2878.5"
山村の一回放飼二回再捕獲法では、1回だけ\(M\)匹の標識虫を放し、野生虫と混じり合って合計個体数がN匹になった後、再捕獲を2回実施する。1回目の調査で野生虫+標識虫合計\(n_1\)匹捕獲し、そのうち標識虫数が\(m_1\)匹だったとする。2回目の調査では野生虫+標識虫合計\(n_2\)匹捕獲し、そのうち標識虫数が\(m_2\)匹であったとする。再捕獲にはフェロモントラップに粘着版を設置したものなどを使用することが多く、これに対応して1回目に捕獲した標識虫\(m_1\)は、試験から除外されると想定している。このとき次の2つのケースを想定して総野生虫数を推定できる。
図
上図は、山村の一回放飼二回再捕獲法で仮定する2つのシナリオを示す.ケースAは、総野生虫数が2回の再捕獲調査時点で同じ場合で、ケースBは、捕獲確率が2回の再捕獲調査時点で同じ場合である.四角は全体個体数サイズを、楕円は標識虫数サイズを模式的に表している.
山村の不偏推定値は、その他の個体数推定法に比べて偏りが少なく精度も高いことが報告されているが、前提に合わない条件で推定すると当然ながら結果が大きくずれてしまう。例えば、合計個体数が大きく変化してしまう場合にケースAを当てはめたり、野生虫と標識虫の割合が大きく変わってしまうような場合にケースBを当てはめたりしてはいけない。
## 山中アメリカシロヒトリ個体数推定実験(1996未発表データ)
mark <- 203 ## 標識虫(野生虫に追加する)
recap.N1 <- 455 ## 1回目捕獲虫総数(野生虫+標識虫)
recap.N2 <- 259 ## 2回目捕獲虫総数(野生虫+標識虫)
recap.M1 <- 36 ## 1回目捕獲虫でマークの付いているもの(標識虫)
recap.M2 <- 7 ## 2回目捕獲虫でマークの付いているもの(標識虫)
## ケースA(野外虫の個体数は期間通じて一定と見込まれる)
estimate.A <- mark*(recap.N1+1)*(recap.N1+2)*recap.M2/(recap.M1+1)/(recap.M1+2)/recap.N2+recap.N1
print(paste("山村ケースAの推定値は", round(estimate.A, digits = 1), sep=":"))
## 95% 信頼区間の推定
temp1 <- recap.M1*(2*recap.M1+3)/(recap.M1+1)/(recap.M1+2)
temp2 <- (1-recap.N1/estimate.A)*(1/recap.M1-1/recap.N1)
temp3 <- (1-recap.N2/estimate.A)*(1/recap.M2-1/recap.N2)
variance.A = ((estimate.A-recap.N1)^2)*(temp1^2*temp2+temp3)
print(paste("山村ケースAの95%信頼区間は:", max(0, round(estimate.A-1.96*sqrt(variance.A), digits=1)), "から", round(estimate.A+1.96*sqrt(variance.A), digits = 1), sep=""))
## ケースB(野外虫と標識虫の個体数割合は期間通じて一定と見込まれる)
estimate.B <- mark*(recap.N1+2)*recap.M2/(recap.M1+1)/(recap.M1+2)+recap.N1
print(paste("山村ケースBの推定値は", round(estimate.B, digits = 1), sep=":"))
## 95% 信頼区間の推定
M1.hat <- mark*recap.M2/(recap.M1+1)+recap.M1
U1.hat <- mark*(recap.N1-recap.M1)*recap.M2/(recap.M1+1)/(recap.M1+2)+(recap.N1-recap.M1)
temp1 <- (M1.hat-2*recap.M1-1)/(recap.M1+1)+(U1.hat-recap.N1+recap.M1)*(2*recap.M1+3)/(recap.M1+1)/(recap.M1+2)
temp2 <- (estimate.B-recap.N1)^2/recap.M2
temp3 <- U1.hat^2/(recap.N1-recap.M1)
variance.B = recap.M1*temp1^2+temp2+temp3
print(paste("山村ケースBの95%信頼区間は:", max(0, round(estimate.B-1.96*sqrt(variance.B), digits=1)), "から", round(estimate.B+1.96*sqrt(variance.B), digits = 1), sep=""))
## [1] "山村ケースAの推定値は:1268.2"
## [1] "山村ケースAの95%信頼区間は:608.9から1927.5"
## [1] "山村ケースBの推定値は:916.9"
## [1] "山村ケースBの95%信頼区間は:476から1357.8"
哺乳類など寿命が長い生物の場合、定期的に標識虫の放飼と再捕獲を複数回繰り返して、各時点での死亡率(増減率)と個体数を推定するJolly-Seber法を使うことが一般的である。下の表は実際にJolly(1965)の論文に記載されている調査データである。全13回の調査を行い、各時点で野生虫+マーク虫全個体\(N_i\)を捕獲して\(i\)時点毎にユニークな標識をつける。捕獲した時点で死んでしまったり弱ってしまったら除去するので放飼する数\(R_i\)は、\(N_i\)と一致しない。この表では、1回目の調査で54匹の野生虫を捕獲し、その全てにマークしている。2回目の調査では、146匹の野生虫+マーク虫が捕獲され、そのうち10匹がマーク虫であった。新たにマーク虫を含む143匹に2回目の識別マークして放飼した。同様に3回目の調査では、169匹の野生虫+マーク虫が捕獲され、そのうち3匹が1回目にマーク虫され2回目には捕獲されなかったマーク中で、34匹が2回目にマークされた虫であった。新たに1回目+2回目のマーク虫を含む164匹に3回目の識別マークして放飼した。
| マークしただけ | 再捕2回目 | 3回目 | 4回目 | 5回目 | 6回目 | 7回目 | 8回目 | 9回目 | 10回目 | 11回目 | 12回目 | 13回目 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1回目の虫 | NA | 10 | 3 | 5 | 2 | 2 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
| 2回目 | NA | NA | 34 | 18 | 8 | 4 | 6 | 4 | 2 | 0 | 2 | 1 | 1 |
| 3回目 | NA | NA | NA | 33 | 13 | 8 | 5 | 0 | 4 | 1 | 3 | 3 | 0 |
| 4回目 | NA | NA | NA | NA | 30 | 20 | 10 | 3 | 2 | 2 | 1 | 1 | 2 |
| 5回目 | NA | NA | NA | NA | NA | 43 | 34 | 14 | 11 | 3 | 0 | 1 | 3 |
| 6回目 | NA | NA | NA | NA | NA | NA | 56 | 19 | 12 | 5 | 4 | 2 | 3 |
| 7回目 | NA | NA | NA | NA | NA | NA | NA | 46 | 28 | 17 | 8 | 7 | 2 |
| 8回目 | NA | NA | NA | NA | NA | NA | NA | NA | 51 | 22 | 12 | 4 | 10 |
| 9回目 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 34 | 16 | 11 | 9 |
| 10回目 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 30 | 16 | 12 |
| 11回目 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 26 | 18 |
| 12回目 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 35 |
| 13回目 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| N_i | 54 | 146 | 169 | 209 | 220 | 209 | 250 | 176 | 172 | 127 | 123 | 120 | 142 |
| R_i | 54 | 143 | 164 | 202 | 214 | 207 | 243 | 175 | 169 | 126 | 120 | 120 | 0 |
Jolly-Seber法は、野外の害虫を捕獲してマークし、放飼した後、再捕獲・放飼を繰り返すことを前提としている。Jolly-Seber法では、標識虫の生残率は観測時点に依存して変わってもよいが、標識された時点にかかわらずに一定であるという仮定を用いていている。標識日によって標識脱落率や生残率が異なる場合にはこの仮定が成立しないため、多回放飼の場面でも一回放飼型の推定法を用いたほうがよい場合がある。ところで、フェロモントラップ粘着版を使った調査では、捕獲した害虫を除去してしまう。そんな場合であっても、放飼する数\(R_i\)から除去したマーク虫を取り除き、新しくマークする害虫だけを記録することで対応できる。 Jolly-Seber法は、極めて面倒な計算を行うので、既存のパッケージやソフトウェアを使うのが手っ取り早い。ただし、一度は自分の手計算で実行して、その内容を充分に理解しておくと、自分なりにカスタマイズした標識再捕獲法を考える時に役に立つだろう。計算方法は伊藤・村井(1977)に詳しく載っている。
## 様々なパッケージがあるが、ここではJollyのアイデアを最もよく理解できるOgleのFSAパッケージを利用する
library(FSA)
## install.packages("FSA", dependencies = TRUE) ## FSAがなければインストールしてください。
## Jollyの論文のデータを手打ち
recap1 <- rep(NA,13)
recap2 <- c(10,rep(NA,12))
recap3 <- c(3,34,rep(NA,11))
recap4 <- c(5,18,33,rep(NA,10))
recap5 <- c(2,8,13,30,rep(NA,9))
recap6 <- c(2,4,8,20,43,rep(NA,8))
recap7 <- c(1,6,5,10,34,56,rep(NA,7))
recap8 <- c(0,4,0,3,14,19,46,rep(NA,6))
recap9 <- c(0,2,4,2,11,12,28,51,rep(NA,5))
recap10 <- c(0,0,1,2,3,5,17,22,34,rep(NA,4))
recap11 <- c(1,2,3,1,0,4,8,12,16,30,rep(NA,3))
recap12 <- c(0,1,3,1,1,2,7,4,11,16,26,NA,NA)
recap13 <- c(0,1,0,2,3,3,2,10,9,12,18,35,NA)
mb.top <- cbind(recap1,recap2,recap3,recap4,recap5,recap6,recap7,recap8,recap9,recap10,recap11,recap12,recap13)
# 集計値の計算
n <- c(54,146,169,209,220,209,250,176,172,127,123,120,142) ## 捕獲数
R <- c(54,143,164,202,214,207,243,175,169,126,120,120,0) ## マーク数
m <- apply(mb.top,2,sum, na.rm=TRUE) ## 総再捕獲数、jolly.topを列ごとに合計しただけ
u <- n-m ## 新野生虫捕獲数、総捕獲数-総再捕獲数
mb.bot <- rbind(m,u,n,R)
jolly.table=rbind(rbind(jolly.top, n), R) # バインドして
# 列名、行名を再定義
colnames(jolly.table) <- c("マークしただけ", "再捕2回目", "3回目", "4回目", "5回目", "6回目", "7回目", "8回目", "9回目", "10回目", "11回目", "12回目", "13回目")
row.names(jolly.table) <- c("1回目の虫", "2回目", "3回目", "4回目", "5回目", "6回目", "7回目", "8回目", "9回目", "10回目", "11回目", "12回目", "13回目", "N_i", "R_i")
(jolly(mb.top,mb.bot, type="Manly")$df) ## 95%信頼区間を計算するためにManly法を使用、実行時括弧()をつけると結果を表示してくれる=print
Jolly-Seber法のアウトプット
データから単純に計算される値
Jolly-Seber法によって推定される値、
## m n R r z M M.se N N.lci N.uci phi phi.lci phi.uci B
## recap1 0 54 54 24 NA NA NA NA NA NA 0.646 0.389 0.783 NA
## recap2 10 146 143 80 14 34.9 4.8 466.2 301.3 979.4 1.009 0.705 1.100 290.5
## recap3 37 169 164 70 57 169.5 17.9 758.1 564.0 1210.0 0.864 0.627 1.028 293.0
## recap4 56 209 202 71 71 256.2 27.1 943.8 725.2 1427.8 0.564 0.422 0.658 400.2
## recap5 53 220 214 109 89 227.0 17.4 928.8 731.0 1353.0 0.834 0.629 0.901 101.5
## recap6 77 209 207 101 121 323.7 23.8 871.6 703.2 1219.3 0.790 0.602 0.866 109.2
## recap7 112 250 243 108 110 358.2 24.9 795.7 663.3 1060.8 0.651 0.499 0.712 134.4
## recap8 86 176 175 99 132 318.3 20.4 647.6 529.5 888.6 0.981 0.741 1.094 -11.6
## recap9 110 172 169 70 121 399.7 33.3 623.0 506.4 863.4 0.685 0.513 0.821 48.5
## recap10 84 127 126 58 107 314.3 27.6 473.3 375.7 681.9 0.880 0.638 1.096 82.8
## recap11 77 123 120 44 88 313.6 34.9 498.6 384.5 751.9 0.767 0.535 1.034 73.3
## recap12 72 120 120 35 60 273.7 36.2 453.6 342.0 712.0 NA NA NA NA
## recap13 95 142 0 NA NA NA NA NA NA NA NA NA NA NA